Hibernate ORM এর পরিচিতি

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM)
243

Hibernate ORM (Object-Relational Mapping) একটি শক্তিশালী ফ্রেমওয়ার্ক, যা জাভা অবজেক্ট এবং রিলেশনাল ডাটাবেসের মধ্যে ডাটা আদান-প্রদানের কাজ সহজ করে। এটি জাভা প্রোগ্রামারদের জন্য একটি নির্ভরযোগ্য টুল, যা SQL-লেখার ঝামেলা দূর করে এবং অবজেক্ট-ওরিয়েন্টেড অ্যাপ্লিকেশন তৈরি সহজতর করে। Hibernate হলো Java Persistence API (JPA)-এর সবচেয়ে জনপ্রিয় ইমপ্লিমেন্টেশন।


Hibernate এর মূল বৈশিষ্ট্য

অবজেক্ট-রিলেশনাল ম্যাপিং (Object-Relational Mapping)

Hibernate ডাটাবেস টেবিল এবং জাভা ক্লাসের মধ্যে ম্যাপিং তৈরি করে। এটি ডাটাবেস টেবিলের কলামগুলোকে জাভা ক্লাসের ফিল্ড হিসেবে উপস্থাপন করে।

স্বয়ংক্রিয় SQL জেনারেশন

Hibernate ডেভেলপারদের সরাসরি SQL কোয়েরি লেখার প্রয়োজন হয় না। এটি নিজে থেকে প্রয়োজনীয় SQL কোয়েরি তৈরি করে এবং ডাটাবেস পরিচালনা করে।

ক্যাশিং সাপোর্ট

Hibernate ক্যাশিং মেকানিজম ব্যবহার করে অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে। এটি ডাটাবেস থেকে বারবার ডেটা রিট্রিভ করার পরিবর্তে ক্যাশ থেকে ডেটা সরবরাহ করতে পারে।

ডাটাবেস স্বাধীনতা

Hibernate একাধিক ডাটাবেসের সাথে সামঞ্জস্যপূর্ণ, যেমন MySQL, PostgreSQL, Oracle, ইত্যাদি। ডাটাবেস পরিবর্তনের সময় কোডে সামান্য বা কোনো পরিবর্তনের প্রয়োজন হয় না।

HQL (Hibernate Query Language)

Hibernate ডাটাবেস অপারেশনের জন্য HQL নামে একটি শক্তিশালী কাস্টম ল্যাঙ্গুয়েজ সরবরাহ করে। এটি SQL-এর মতোই কাজ করে, কিন্তু অবজেক্ট-ওরিয়েন্টেড ডেটা ম্যানেজমেন্টে আরও উপযোগী।


Hibernate এর প্রধান উপাদান

Configuration

Hibernate এর কনফিগারেশনের জন্য hibernate.cfg.xml বা application.properties ফাইল ব্যবহার করা হয়। এতে ডাটাবেসের তথ্য এবং অন্যান্য সেটিংস সংজ্ঞায়িত থাকে।

SessionFactory

SessionFactory একটি ফ্যাক্টরি প্যাটার্ন যা Hibernate সেশন তৈরিতে ব্যবহৃত হয়। এটি একবার তৈরি হলে অ্যাপ্লিকেশনের লাইফটাইমে পুনর্ব্যবহৃত হয়।

Session

Session হলো Hibernate এবং ডাটাবেসের মধ্যে একটি লজিক্যাল কানেকশন। এটি ডাটাবেস অপারেশনের জন্য ব্যবহৃত হয়।

Transaction

Transaction অবজেক্ট Hibernate এ একাধিক কাজকে একটি ইউনিট হিসেবে পরিচালনা করে। এটি ডাটাবেস অপারেশন সম্পন্ন না হওয়া পর্যন্ত পরিবর্তনগুলো ডাটাবেসে জমা হতে দেয় না।


Hibernate ORM এর ব্যবহারিক উদাহরণ

Hibernate Configuration

hibernate.cfg.xml ফাইলে Hibernate কনফিগারেশন সংজ্ঞায়িত করতে হয়:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">password</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
    </session-factory>
</hibernate-configuration>

এন্টিটি ক্লাস তৈরি

Hibernate এ ডাটাবেস টেবিলের জন্য এন্টিটি ক্লাস তৈরি করতে হয়:

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Employee {
    @Id
    private int id;
    private String name;
    private double salary;

    // Getters and Setters
}

Hibernate Session ব্যবহার

Hibernate এর মাধ্যমে ডাটাবেসে ডেটা সংরক্ষণ করতে Session ব্যবহার করা হয়:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Main {
    public static void main(String[] args) {
        SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
        Session session = factory.openSession();

        session.beginTransaction();

        Employee employee = new Employee();
        employee.setId(1);
        employee.setName("John Doe");
        employee.setSalary(5000);

        session.save(employee);
        session.getTransaction().commit();

        session.close();
        factory.close();
    }
}

Hibernate এর সুবিধা

  • কোড এবং ডাটাবেস লজিক আলাদা করা সহজ।
  • SQL-লেখার ঝামেলা কমায়।
  • ডাটাবেসের উপর নির্ভরশীলতা কমায়।
  • বড় অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে।

সারাংশ

Hibernate ORM একটি জনপ্রিয় ও শক্তিশালী ফ্রেমওয়ার্ক, যা জাভা ডেভেলপারদের জন্য ডাটাবেস পরিচালনাকে সহজ ও দক্ষ করে। এর সহজ ইন্টিগ্রেশন, SQL অটোমেশন, এবং ডাটাবেস স্বাধীনতার কারণে এটি এন্টারপ্রাইজ অ্যাপ্লিকেশন তৈরির জন্য ব্যাপকভাবে ব্যবহৃত হয়।

Content added By

Hibernate কি এবং কেন এটি ব্যবহার করা হয়?

187

Hibernate কি?

Hibernate হল একটি শক্তিশালী ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা জাভা অ্যাপ্লিকেশন এবং রিলেশনাল ডেটাবেসের (Relational Database) মধ্যে ডেটা সংযোগ স্থাপন করে। এটি জাভার অবজেক্টগুলোকে ডেটাবেসের টেবিলের সঙ্গে ম্যাপিং করার সুবিধা প্রদান করে। Hibernate সরাসরি SQL লেখার প্রয়োজনীয়তা কমায় এবং ডেটাবেস পরিচালনা আরও সহজ করে তোলে।

Hibernate মূলত JPA (Java Persistence API)-এর একটি জনপ্রিয় বাস্তবায়ন (Implementation)। এটি ডেটা ম্যানেজমেন্ট এবং অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করার জন্য বিভিন্ন সুবিধা প্রদান করে।


Hibernate কেন ব্যবহার করা হয়?

Hibernate ব্যবহারের জন্য কিছু মূল কারণ নিম্নরূপ:

১. অবজেক্ট-রিলেশনাল ম্যাপিং (Object-Relational Mapping):

Hibernate জাভার ক্লাস এবং ডেটাবেস টেবিলের মধ্যে ম্যাপিং সরবরাহ করে। এটি ডেটাবেস অপারেশনগুলো অবজেক্ট-অরিয়েন্টেড পদ্ধতিতে করতে সক্ষম করে।

২. HQL (Hibernate Query Language):

Hibernate SQL এর পরিবর্তে HQL (Hibernate Query Language) ব্যবহার করে, যা অবজেক্ট-ওরিয়েন্টেড কোয়েরি লেখার সুবিধা দেয়।

৩. ডেটাবেস স্বাধীনতা (Database Independence):

Hibernate বিভিন্ন ডেটাবেসের সঙ্গে কাজ করতে পারে। শুধুমাত্র ডায়ালেক্ট (Dialect) পরিবর্তন করে বিভিন্ন ডেটাবেসে সহজেই কোড ব্যবহার করা যায়।

৪. ক্যাশিং সাপোর্ট:

Hibernate বিল্ট-ইন ফার্স্ট-লেভেল এবং সেকেন্ড-লেভেল ক্যাশিং এর মাধ্যমে ডেটা রিট্রিভাল প্রক্রিয়া দ্রুততর করে।

৫. অটোমেটেড ডেটাবেস টেবিল জেনারেশন:

Hibernate স্বয়ংক্রিয়ভাবে ডেটাবেসের টেবিল তৈরি, আপডেট এবং মডিফাই করতে পারে।

৬. ডেটাবেস সংযোগ পরিচালনা:

Hibernate ডেটাবেস সংযোগ (Connection Management) সহজ করে এবং ডেটাবেস ট্রানজ্যাকশন (Transactions) পরিচালনার জন্য একীভূত সাপোর্ট প্রদান করে।

৭. পোর্টেবল এবং মেইনটেইনেবল:

Hibernate কোড সহজে মেইনটেইনযোগ্য এবং একাধিক ডেটাবেসের মধ্যে পোর্টেবল।


Hibernate ব্যবহার করার সুবিধা

  • ডেটাবেস-নির্ভর কোড কমানো: SQL নির্ভর কোডের পরিবর্তে OOP ধারণা ব্যবহার করা যায়।
  • অ্যাপ্লিকেশনের কর্মক্ষমতা বৃদ্ধি: ক্যাশিং এবং Lazy Loading-এর মতো সুবিধার মাধ্যমে।
  • মাল্টিপল ডেটাবেস সাপোর্ট: MySQL, PostgreSQL, Oracle সহ একাধিক ডেটাবেস সাপোর্ট।
  • ডেটা ভ্যালিডেশন: ডেটার সঠিকতা নিশ্চিতে অ্যানোটেশন (Annotations) ব্যবহার।

Hibernate-এর ব্যবহারিক উদাহরণ

Entity ক্লাস তৈরি

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Employee {
    @Id
    private int id;
    private String name;
    private double salary;

    // Getter and Setter
}

Hibernate Configuration ফাইল (hibernate.cfg.xml)

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.h2.Driver</property>
        <property name="hibernate.connection.url">jdbc:h2:mem:testdb</property>
        <property name="hibernate.connection.username">sa</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
    </session-factory>
</hibernate-configuration>

Hibernate Session দিয়ে ডেটা সংরক্ষণ

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateExample {
    public static void main(String[] args) {
        SessionFactory factory = new Configuration().configure().buildSessionFactory();
        Session session = factory.openSession();

        session.beginTransaction();
        Employee employee = new Employee();
        employee.setId(1);
        employee.setName("John Doe");
        employee.setSalary(50000);
        
        session.save(employee);
        session.getTransaction().commit();
        session.close();
    }
}

সারাংশ

Hibernate একটি শক্তিশালী ফ্রেমওয়ার্ক যা জাভা অ্যাপ্লিকেশন এবং ডেটাবেসের মধ্যে একটি ব্রিজ তৈরি করে। এটি ডেটাবেস অপারেশনকে সহজতর ও কার্যকর করে এবং অ্যাপ্লিকেশনের ডেটা ম্যানেজমেন্ট সিস্টেমকে আরও উন্নত করে তোলে। ORM-এর জন্য Hibernate ব্যবহারে ডেভেলপারদের কোড মেইনটেইন করা এবং স্কেল করা অনেক সহজ হয়।

Content added By

Hibernate এর কাজের প্রক্রিয়া এবং মূল ধারণা

185

Hibernate হলো জাভা-ভিত্তিক একটি Object Relational Mapping (ORM) ফ্রেমওয়ার্ক, যা ডেটাবেস অপারেশন সহজ করে। এটি JPA (Java Persistence API) এর একটি জনপ্রিয় ইমপ্লিমেন্টেশন এবং স্প্রিং বুটে ORM পরিচালনার জন্য বহুল ব্যবহৃত হয়।

Hibernate ডাটাবেসের সঙ্গে কাজ করার জন্য Object-Oriented পদ্ধতি ব্যবহার করে। এটি ডেটাবেসের টেবিল ও কলামগুলোকে জাভার ক্লাস ও ফিল্ডে ম্যাপ করে এবং SQL লেখার প্রয়োজনীয়তা হ্রাস করে।


Hibernate এর কাজের প্রক্রিয়া

Hibernate মূলত নিম্নলিখিত প্রক্রিয়াগুলোর মাধ্যমে কাজ করে:

১. Entity ক্লাস তৈরি

Hibernate একটি Entity ক্লাসের মাধ্যমে ডাটাবেসের টেবিলের কাঠামোকে রিপ্রেজেন্ট করে। Entity ক্লাসে @Entity, @Table, @Id, এবং অন্যান্য এনোটেশন ব্যবহার করে টেবিল ও কলাম ম্যাপিং করা হয়।

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String department;

    // Getters and Setters
}

২. SessionFactory তৈরি

Hibernate এর মাধ্যমে ডেটাবেসের সঙ্গে যোগাযোগ স্থাপন করার জন্য SessionFactory ব্যবহার করা হয়। এটি কনফিগারেশন তথ্য ব্যবহার করে একটি সেশন তৈরির দায়িত্ব পালন করে।

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

৩. Session পরিচালনা

Session হলো Hibernate এর মূল উপাদান, যা ডেটাবেস অপারেশন পরিচালনা করে। Session এর মাধ্যমে ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন সম্পন্ন করা হয়।

Session session = sessionFactory.openSession();
session.beginTransaction();

Employee employee = new Employee();
employee.setName("John Doe");
employee.setDepartment("IT");

session.save(employee);
session.getTransaction().commit();
session.close();

৪. SQL Generation

Hibernate Entity ক্লাসের ভিত্তিতে স্বয়ংক্রিয়ভাবে SQL তৈরি করে। উদাহরণস্বরূপ, উপরের কোডে Hibernate একটি INSERT কুয়েরি তৈরি করে:

INSERT INTO employee (name, department) VALUES ('John Doe', 'IT');

৫. Caching

Hibernate ডেটাবেস অপারেশন দ্রুত করার জন্য ক্যাশিং ব্যবহার করে। এটি মূলত দুই স্তরের ক্যাশিং পরিচালনা করে:

  • First-Level Cache: Session-ভিত্তিক।
  • Second-Level Cache: পুরো অ্যাপ্লিকেশন জুড়ে ব্যবহৃত।

Hibernate এর মূল ধারণা

১. ORM (Object Relational Mapping)

Hibernate এর মূল ভিত্তি হলো ORM। এটি অবজেক্ট এবং রিলেশনাল ডেটাবেসের মধ্যে একটি ম্যাপিং তৈরি করে। ডেটাবেস টেবিলের রো গুলোকে জাভার অবজেক্টে রূপান্তর করা হয় এবং অবজেক্টগুলোর পরিবর্তন ডাটাবেসে প্রতিফলিত হয়।

২. Persistence Context

Persistence Context হলো Hibernate এর মাধ্যমে অবজেক্ট ট্র্যাকিংয়ের একটি প্রক্রিয়া। এটি ডেটাবেস এবং জাভার অবজেক্টের মধ্যে সিনক্রোনাইজেশন নিশ্চিত করে।

৩. Lazy and Eager Loading

Hibernate ডেটা লোড করার জন্য দুটি পদ্ধতি অনুসরণ করে:

  • Lazy Loading: প্রয়োজনীয় হলে ডেটা লোড করে।
  • Eager Loading: শুরুতেই সমস্ত ডেটা লোড করে।

৪. Query Language (HQL)

Hibernate একটি নিজস্ব কুয়েরি ভাষা (Hibernate Query Language - HQL) ব্যবহার করে, যা অবজেক্ট-ভিত্তিক এবং SQL এর মতো দেখতে। উদাহরণ:

Query query = session.createQuery("FROM Employee WHERE department = :dept");
query.setParameter("dept", "IT");
List<Employee> employees = query.list();

৫. Transaction Management

Hibernate ট্রানজ্যাকশন পরিচালনার জন্য Transaction API ব্যবহার করে, যা ডেটাবেস অপারেশনগুলোর একক এক্সিকিউশন নিশ্চিত করে।


Hibernate এর সুবিধা

  • SQL লেখার প্রয়োজনীয়তা হ্রাস: Hibernate স্বয়ংক্রিয়ভাবে SQL তৈরি করে।
  • Database Independence: একাধিক ডেটাবেস সাপোর্ট করে।
  • Object-Oriented পদ্ধতি: ডেটাবেস পরিচালনার জন্য অবজেক্ট ব্যবহারের সুবিধা।
  • Caching সুবিধা: দ্রুত ডেটা প্রসেসিং নিশ্চিত করে।
  • Lazy এবং Eager Loading: ডেটা লোডিংয়ের নমনীয়তা।

সারাংশ

Hibernate স্প্রিং বুট এবং অন্যান্য জাভা-ভিত্তিক অ্যাপ্লিকেশনে ORM ইমপ্লিমেন্টেশনের জন্য একটি শক্তিশালী টুল। এটি ডেটাবেস অপারেশনগুলোকে সহজ, দ্রুত এবং আরও কার্যকর করে তোলে। এর স্বয়ংক্রিয় SQL জেনারেশন এবং ক্যাশিং সুবিধা উন্নত পারফরম্যান্স নিশ্চিত করে।


Content added By

Hibernate এর সাথে Spring Boot Integration

225

Hibernate হল একটি শক্তিশালী ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা ডাটাবেস এবং জাভা অবজেক্টের মধ্যে সম্পর্ক স্থাপন করে। Spring Boot Hibernate-এর সাথে কাজ করা সহজতর করে, কারণ এটি অটো-কনফিগারেশন এবং স্টার্টার ডিপেনডেন্সির মাধ্যমে ডেভেলপারদের অধিকাংশ কাজ সরলীকৃত করে।


Hibernate এবং Spring Boot ইন্টিগ্রেশন প্রক্রিয়া

ডিপেনডেন্সি যোগ করা (Maven)

Hibernate এবং Spring Boot Integration এর জন্য প্রথম ধাপ হলো প্রয়োজনীয় ডিপেনডেন্সি যোগ করা। pom.xml ফাইলটিতে নিম্নলিখিত ডিপেনডেন্সি যুক্ত করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

ডাটাবেস কনফিগারেশন

application.properties বা application.yml ফাইলের মাধ্যমে ডাটাবেস সংযোগ এবং Hibernate-এর প্রয়োজনীয় সেটিংস কনফিগার করুন:

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

নোট: spring.jpa.hibernate.ddl-auto এর মান update, create, validate ইত্যাদি হতে পারে। ডেভেলপমেন্টের জন্য update অথবা create ব্যবহার করা যেতে পারে, তবে প্রোডাকশনে সতর্কতার সাথে ব্যবহার করুন।


Hibernate Entity ক্লাস তৈরি

Hibernate Entity হলো একটি জাভা ক্লাস যা ডাটাবেসের টেবিলের প্রতিনিধিত্ব করে। এটি তৈরি করতে @Entity এবং @Table অ্যানোটেশন ব্যবহার করা হয়। উদাহরণস্বরূপ:

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // Getter and Setter
}

Spring Data JPA Repository তৈরি

Hibernate Integration-এ Spring Data JPA ব্যবহার করে রেপোজিটরি তৈরি করতে হবে। এটি ডাটাবেসে CRUD অপারেশন সহজ করে তোলে:

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

সার্ভিস লেয়ার তৈরি

সার্ভিস লেয়ার ডেটা প্রসেসিং এবং ব্যবসায়িক লজিক পরিচালনার জন্য ব্যবহৃত হয়। উদাহরণ:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public Product saveProduct(Product product) {
        return productRepository.save(product);
    }
}

REST কন্ট্রোলার তৈরি

Spring Boot-এ RESTful API তৈরি করতে কন্ট্রোলার ব্যবহার করা হয়:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductService productService;

    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

    @PostMapping
    public Product saveProduct(@RequestBody Product product) {
        return productService.saveProduct(product);
    }
}

Hibernate Integration টেস্ট করা

অ্যাপ্লিকেশন রান করার পর ডিফল্টভাবে MySQL ডাটাবেসে Product নামে একটি টেবিল তৈরি হবে। REST API এর মাধ্যমে ডেটা ইনসার্ট বা ফেচ করা যাবে। উদাহরণ:

GET API:

GET http://localhost:8080/products

POST API:

POST http://localhost:8080/products
Content-Type: application/json
Body:
{
  "name": "Laptop",
  "price": 75000.00
}

Hibernate এবং Spring Boot Integration এর সুবিধা

  • স্বয়ংক্রিয় টেবিল ক্রিয়েশন: Hibernate Entity থেকে ডাটাবেস টেবিল তৈরি সহজ হয়।
  • কাস্টম কুয়েরি: সহজে জটিল কুয়েরি পরিচালনা করা যায়।
  • ডাটাবেস ইন্ডিপেনডেন্স: Hibernate-এর ডায়ালেক্ট সমর্থন বিভিন্ন ডাটাবেসে সহজ মাইগ্রেশন নিশ্চিত করে।
  • উন্নত ডেটা ম্যানেজমেন্ট: কম কোডে শক্তিশালী ORM সমাধান।

Hibernate এর সাথে Spring Boot এর ইন্টিগ্রেশন ডেটাবেস-নির্ভর অ্যাপ্লিকেশন ডেভেলপমেন্টকে অনেক বেশি কার্যকর এবং দ্রুত করে তোলে।

Content added By

উদাহরণ সহ Hibernate এবং Spring Boot ব্যবহার

223

Spring Boot এবং Hibernate ব্যবহার করে ডেটাবেস ইন্টিগ্রেশন করা খুবই সহজ এবং কার্যকর। Hibernate একটি জনপ্রিয় ORM টুল যা JPA স্পেসিফিকেশন অনুসরণ করে এবং Spring Boot ডেটাবেস কনফিগারেশনের কাজ আরও সহজ করে দেয়। নিচে উদাহরণ সহ একটি পূর্ণাঙ্গ প্রজেক্ট তৈরি করা দেখানো হয়েছে।


উদাহরণ: Spring Boot এবং Hibernate ব্যবহার করে একটি CRUD অ্যাপ্লিকেশন তৈরি

আমরা একটি প্রোডাক্ট ম্যানেজমেন্ট অ্যাপ্লিকেশন তৈরি করবো, যেখানে প্রোডাক্ট ডেটাবেসে সংরক্ষণ, আপডেট, মুছে ফেলা এবং দেখা যাবে।


১. Maven ডিপেনডেন্সি যোগ করা

Spring Boot এবং Hibernate এর জন্য Maven pom.xml ফাইলে ডিপেনডেন্সি যোগ করতে হবে।

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

২. ডেটাবেস কনফিগারেশন (application.properties)

application.properties ফাইলে ডেটাবেস কনফিগারেশন দিতে হবে।

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update

৩. Entity ক্লাস তৈরি করা

Hibernate ব্যবহার করে একটি Entity ক্লাস তৈরি করুন।

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // Getters and Setters
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
}

৪. JPA Repository ইন্টারফেস তৈরি করা

Spring Data JPA ব্যবহার করে একটি রিপোজিটরি ইন্টারফেস তৈরি করুন।

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

৫. সার্ভিস ক্লাস তৈরি করা

ডেটাবেস অপারেশন পরিচালনার জন্য একটি সার্ভিস ক্লাস তৈরি করুন।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {
    @Autowired
    private ProductRepository productRepository;

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }

    public Product saveProduct(Product product) {
        return productRepository.save(product);
    }

    public void deleteProduct(Long id) {
        productRepository.deleteById(id);
    }
}

৬. কন্ট্রোলার ক্লাস তৈরি করা

RESTful API তৈরি করতে একটি কন্ট্রোলার ক্লাস তৈরি করুন।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {
    @Autowired
    private ProductService productService;

    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

    @GetMapping("/{id}")
    public Product getProductById(@PathVariable Long id) {
        return productService.getProductById(id);
    }

    @PostMapping
    public Product createProduct(@RequestBody Product product) {
        return productService.saveProduct(product);
    }

    @PutMapping("/{id}")
    public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
        Product existingProduct = productService.getProductById(id);
        if (existingProduct != null) {
            existingProduct.setName(product.getName());
            existingProduct.setPrice(product.getPrice());
            return productService.saveProduct(existingProduct);
        }
        return null;
    }

    @DeleteMapping("/{id}")
    public void deleteProduct(@PathVariable Long id) {
        productService.deleteProduct(id);
    }
}

৭. অ্যাপ্লিকেশন রান করা

Spring Boot অ্যাপ্লিকেশন রান করার জন্য @SpringBootApplication এনোটেশন সহ মেইন ক্লাস তৈরি করুন।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootOrmApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootOrmApplication.class, args);
    }
}

API টেস্টিং

আপনার অ্যাপ্লিকেশন চালু হলে নিচের API রিকোয়েস্টগুলো দিয়ে টেস্ট করতে পারেন:

  1. GET /products: সমস্ত প্রোডাক্ট দেখতে।
  2. GET /products/{id}: নির্দিষ্ট প্রোডাক্ট দেখতে।
  3. POST /products: নতুন প্রোডাক্ট যোগ করতে।
  4. PUT /products/{id}: বিদ্যমান প্রোডাক্ট আপডেট করতে।
  5. DELETE /products/{id}: প্রোডাক্ট ডিলিট করতে।

সারাংশ

Spring Boot এবং Hibernate এর সাহায্যে একটি সম্পূর্ণ CRUD অ্যাপ্লিকেশন তৈরি করা সহজ। Spring Boot এর অটো-কনফিগারেশন এবং Hibernate এর ORM ক্ষমতা ব্যবহার করে ডেটাবেস সংক্রান্ত কাজগুলো দ্রুত এবং কার্যকরভাবে সম্পন্ন করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...